1. Field of the Invention
This invention relates generally to computer shell software, and more particularly to a distributed shell that provides distributed shell command control in a distributed computer environment.
2. Description of the Related Art
Current computer systems generally perform operations and interact with users and application programs utilizing an operating system, which typically includes a shell and a kernel. The shell is the interactive user interface of the operating system, which understands and executes the commands a user enters. In some systems, the shell is called a command interpreter. As the outer layer of an operating system, a shell can be contrasted with the kernel, the operating system's inmost layer or core of services.
Typically, a kernel includes an interrupt handler that handles all requests or completed I/O operations that compete for the kernel's services, a scheduler that determines which programs share the kernel's processing time in what order, and a supervisor that actually gives use of the computer to each process when it is scheduled. A kernel may also include a manager of the operating system's address spaces in memory or storage, sharing these among all components and other users of the kernel's services. A kernel's services are requested by other parts of the operating system or by an application through a specified set of program interfaces sometimes known as system calls.
Although a shell can be designed for a single computer system with relative ease, a shell for a distributed computer system is difficult to produce. FIG. 1 is a block diagram showing a prior art distributed computer system 100 that utilizes conventional shell programs. As shown in FIG. 1, the distributed computer system 100 includes a plurality of computer systems 102a–102c connected together via a network 106. In addition, each computer system 102a–102c includes a prior art shell 104a–104c to facilitate command interaction with a user.
As is well known, distributed computer systems 100 are often utilized to execute distributed applications, which generally comprise a plurality of independent tasks. The task independence allows the tasks to be executed in parallel on different computer systems 102a–102c to achieve faster execution of the application. To perform a distributed application, typically a script 108 is executed that defines how the application is to be executed. For example, the script 108 can include instructions on how to separate the tasks comprising the application and how to deploy the tasks to the various computer systems 102a–102c. 
However, to program such functionality on a prior art shell 104a–104c requires hundreds of lines of code. Moreover, synchronization problems must be addressed, as well as output collection problems. Unfortunately, the prior art shell 104a–104c generally is designed to operate only on a single machine. Synchronization and output collection problems are left to the system developer and user to handle.
In view of the foregoing, there is a need for a distributed shell design that provides synchronization and output collection. Moreover, the distributed shell should allow commands to be processed in a distributed manner without requiring undue development time on the part of the user.